From bd0df022582a1d45e608c32d7a3e774f4a4a2a0a Mon Sep 17 00:00:00 2001 From: Martin Nordholts Date: Sun, 16 Nov 2008 12:12:19 +0000 Subject: [PATCH] extensions/gegl-fixups.c (conv_rgbAF_sdl32) Make un-pre-multiplication * extensions/gegl-fixups.c (conv_rgbAF_sdl32) * babl/base/model-gray.c (premultiplied_to_non_premultiplied): Make un-pre-multiplication with close-to-zero alpha values result in complete black instead of a bit brigher than black. svn path=/trunk/; revision=355 --- ChangeLog | 7 +++++++ babl/base/model-gray.c | 2 +- extensions/gegl-fixups.c | 8 ++------ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 87a957e..4592d97 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-11-16 Martin Nordholts + + * extensions/gegl-fixups.c (conv_rgbAF_sdl32) + * babl/base/model-gray.c (premultiplied_to_non_premultiplied): + Make un-pre-multiplication with close-to-zero alpha values result + in complete black instead of a bit brigher than black. + 2008-11-08 Øyvind Kolås * extensions/gegl-fixups.c: (conv_rgbAF_lrgba8): use the lookup tables diff --git a/babl/base/model-gray.c b/babl/base/model-gray.c index 4ca0f88..b7004d4 100644 --- a/babl/base/model-gray.c +++ b/babl/base/model-gray.c @@ -414,7 +414,7 @@ premultiplied_to_non_premultiplied (int src_bands, } else { - *(double *) dst[band] = 0.001; + *(double *) dst[band] = 0.0; } } *(double *) dst[dst_bands - 1] = alpha; diff --git a/extensions/gegl-fixups.c b/extensions/gegl-fixups.c index 20948cb..9bc6b8b 100644 --- a/extensions/gegl-fixups.c +++ b/extensions/gegl-fixups.c @@ -333,18 +333,14 @@ conv_rgbAF_sdl32 (unsigned char *srcc, { int i; float alpha = src[3]; - if (alpha < 0.0001) - alpha = 0.0001; for (i = 0; i < 3; i++) { float ca = src[i]; - float c; int ret; - c = ca / alpha; - if (alpha == 0.0) + if (alpha < 0.0001) ret = 0; else - ret = table_F_8g[gggl_float_to_index16 (c)]; + ret = table_F_8g[gggl_float_to_index16 (ca / alpha)]; if (ret <= 0) dst[i] = 0; else if (ret > 255) -- 2.30.2